/**
 * 自定义工具类
 */
var customUtils = $.extend({}, customUtils);// 定义全局对象
// 将form 表单序列化为对象
customUtils.serializeObject = function(formId) {
	var obj = {};
	// JSON数组对象
	var arrayObj = $("#" + formId).serializeArray();
	$.each(arrayObj, function(index) {
		if (obj[this['name']]) {
			obj[this['name']] = obj[this['name']] + "," + this['value'];
		} else {
			obj[this['name']] = this['value'];
		}
	});
	return obj;
};

/**
 * 根据valArray数组中的值，选中对应的checkbox。 name：checkbox的name属性 valArray：数据列表
 */
customUtils.checkedByArray = function(name, valArray) {
	if (valArray == null || valArray.length == 0)
		return;
	$("input[name='" + name + "']").each(function() {
		var tmp = $(this);
		$.each(valArray, function(idx, value) {
			console.info('value == tmp.val()' + value + '==' + tmp.val());
			if (value == tmp.val()) {
				tmp.attr("checked", "checked");
			}
		});
	});
}
/**
 * 将字段校验错误信息显示在页面上
 */
customUtils.showFieldError = function(json) {
	$.each(json, function(item) {
		var errorMsg = '<td class="msg" id="' + item
				+ 'Msg" width="130px" ><span style="color: red;" >'
				+ json[item] + '</span></td>';
		$('#' + item).parent().after(errorMsg);
	});
}
/**
 * 删除以Msg结尾的内容，用来清除所有错误消息
 */
customUtils.clearAllMsg = function() {
	$("[id$='Msg']").each(function() {
		$(this).remove();
		console.info(this);
	});
}
/**
 * 删除自动用工具类生成的字段错误消息
 */
customUtils.clearFieldMsg = function() {
	$('.' + msgClass).remove();
}
/**
 * 根据id删除错误消息
 */
customUtils.claerMsgById = function(id) {
	$('.' + id).remove();
}

// 判断是否是邮箱
customUtils.isEmail = function(val) {
	var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
	return reg.test(val);
}
// 判断是否是手机 11位纯数字
customUtils.isPhone = function(val) {
	var reg = /^1[0-9]{10}$/;
	return reg.test(val);
}
// 判断密码是否符合规则 6-8位 包含大小写字母 数字
customUtils.isPwd = function(val) {
	var reg = /^[a-zA-Z0-9]{6,18}$/;
	return reg.test(val);
}
// 判断执照编号是否符合规则 18位营业执照编码校验
customUtils.isBusinessLicenseNum = function(val) {
	var reg = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})([0-9]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9Y])$/;
	return reg.test(val);
}
// 判断是否为公司名称
customUtils.isCompanyName = function(val) {
	var reg = /^[\(\)\（\）\u4E00-\u9FA5]+$/;
	return reg.test(val);
}
// 判断是否为图片类型
customUtils.isImage = function(val) {
	var reg = /^image\//;
	return reg.test(val);
}
// 信息对象
customUtils.msg = {
	"isPwd" : {
		msg1 : "密码不能为空",
		msg2 : "请输入6~20位,且包含大小写字母与数字组成的密码"
	},
	"isPhone" : {
		msg1 : "手机号不能为空",
		msg2 : "请输入11位数字的手机号"
	},
	"isEmail" : {
		msg1 : "邮箱号不能为空",
		msg2 : "请输入正确的邮箱格式，如8888888@qq.com"
	},
	"isBusinessLicenseNum" : {
		msg1 : "营业执照编号不能为空",
		msg2 : "请输入正确的18位营业执照编码"
	},
	"isImage" : {
		msg1 : "图片不能为空",
		msg2 : "请选择图片文件"
	},
	"isCompanyName" : {
		msg1 : "公司名称不能为空",
		msg2 : "请输入正确的公司名称"
	}
}
/**
 * 校验指定的值
 * 
 * @param val
 *            你要校验的值
 * @param regName
 *            你要使用的校验方法名
 */
customUtils.verifyFormat = function(val, regName) {
	val = $.trim(val);
	var tipMsg = {};
	if (!val) {
		tipMsg.flag = false;
		tipMsg.msg = customUtils.msg[regName].msg1;
		return tipMsg;
	}
	var bool = customUtils[regName](val);
	if (bool) {
		tipMsg.flag = true;
		return tipMsg;
	} else {
		tipMsg.flag = false;
		tipMsg.msg = customUtils.msg[regName].msg2;
		return tipMsg;
	}
}

// 数据太多显示一部分
customUtils.showPartInfo = function(value, row, index) {
	if (value && value.length > 10) {
		return value.substr(0, 10) + "...";
	} else {
		return value;
	}
}

/**
 * 处理返回正确返回的数据，配合ajaxByDefault函数使用
 * 
 * @param json
 *            json数组
 */
customUtils.customDateHandle = function(result) {
	if (result.checkErrMsg) {// 业务错误
		var msgDiv = $("#checkError");
		msgDiv.html(result.checkErrMsg);
		msgDiv.css({
			'color' : 'red'
		});
	} else if (result.sysErrorMsg) {// 系统错误
		var msgDiv = $("#checkError");
		msgDiv.html(result.sysErrorMsg);
		msgDiv.css({
			'color' : 'red'
		});
	} else if (result.fieldErrMsg) {// 字段校验错误
		var json = result.fieldErrMsg;
		customUtils.showFielError(json);
	} else {
		// 操作成功
		$.messager.show({
			title : '操作提示',
			msg : '操作成功'
		});

	}

	/**
	 * 通用ajax请求，请求数据类型为默认的，springMVC才能使用@Valid验证
	 * 
	 * @param postWay
	 *            请求方式（post、get、put、delete）
	 * @param dataObj
	 *            提交的数据
	 * @param urlPath
	 *            请求路径
	 * @param customFunction
	 *            自定义回调函数
	 */
	customUtils.ajaxByDefault = function(postWay, dataObj, urlPath,
			customFunction) {

		$.ajax({
			type : postWay,
			// 默认内容类型
			contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
			// 请求路径
			url : urlPath,
			processData : false,
			dataType : 'json',
			data : dataObj,
			// 服务器处理成功的响应
			success : function(data) {
				console.info("success:" + data);
				customFunction(data);
			},
			// 异常响应
			error : function(data) {
				console.info("error:" + data);
				customFunction(data);
			}
		});
	}

	/**
	 * js中获取上下文路径
	 * 
	 * @return 格式为：http://localhost:8080/ithrp
	 */
	customUtils.getRootPath = function() {
		// 获取当前网址，如： http://localhost:8080/ithrp/login.html
		var curWwwPath = window.document.location.href;
		// 获取主机地址之后的目录，如：ithrp/login.html
		var pathName = window.document.location.pathname;
		var pos = curWwwPath.indexOf(pathName);
		// 获取主机地址，如： http://localhost:8080
		var localhostPath = curWwwPath.substring(0, pos);
		// 获取带"/"的项目名，如：/ithrp
		var projectName = pathName.substring(0,
				pathName.substr(1).indexOf('/') + 1);
		return (localhostPath + projectName);
	}

}